﻿using System;
using System.Collections;

namespace Inheritance
{
    public class BaseObject
    {
        protected int x = 5;
        protected int y = 5;
        protected int height = 6;
        protected int width = 6;

        public BaseObject(int x =7, int y = 7)
        {
            this.x = x;
            this.y = y;
        }

        public void GetCoordinates()
        {
            Console.WriteLine("Координата Х: {0} Координата Y: {1}", x, y);
        }

        public void Size()
        {
            Console.WriteLine("Высота: {0} Ширина: {1}", height, width);
        }
    }


    public class Text : BaseObject
    {
        private string messageText = "Бла-бла";

        public Text(int x, int y)
            :base(x,y)
        {
            
            
        }

        public Text(int x, int y, string text)
            :base(x,y)
        {
            this.messageText = text;
        }

        public Text(string text)
            :base(99,99)
        {
            this.messageText = text;
        }

        public string Message
        {
            get { return messageText; }
        }

        public void SetX(int number)
        {
            x = number;
        }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            BaseObject bo = new BaseObject(8);
            //bo.GetCoordinates();
            //bo.Size();
            //Console.WriteLine("\nЭкземпляр класса Text\n");

            Text text = new Text("Hello!");
            Console.WriteLine(text.Message);

            text.GetCoordinates();
       
            MyStack stack = new MyStack();
            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
            stack.Push(4);
            stack.Push(5);
            Console.WriteLine(stack.Pop()); //5
            Console.WriteLine(stack.Pop()); //4
            Console.WriteLine(stack.Pop()); //3
            Console.WriteLine(stack.Pop()); //2
            Console.WriteLine(stack.Pop()); //1
            Console.WriteLine(stack.Pop()); //тут будет ошибка, так как стэк пустой.
            stack.Push(1);
            stack.Push(2);
            stack.Clear();
            Console.WriteLine(stack.Pop()); //тут будет ошибка, так как стэк пустой.




        }
    }
}
